1. Field of the Invention
The present invention relates to a distributed service framework for executing services in a distributed way.
2. Description of the Related Art
C. Adam et al. (“A service Middleware that scales in System Size and Applications”, 10th IFIP/IEEE International Symposium on Integrated Network Management (IM-2007), Munich, Germany, May 21-25, 2007, pages 70-79) disclose a peer-to-peer service management middleware that dynamically allocates system resources to a large set of application services. A possible deployment scenario described by the Authors includes a cluster, comprising several data centers, and many entry points. Each data centre includes a plurality of nodes. Each node can run concurrently instances of several applications. Service requests enter the cluster through the entry points that direct incoming requests to the nodes using a round-robin forwarding policy. Upon receiving a request from an entry point, a node determines the application type thereof. The node processes the request if it runs the corresponding application and if the CPU utilization is below a configurable threshold. Otherwise the node consults its forwarding table and routes the request to a peer that offers the required application. The forwarding table contains, for each application offered in the system, a configurable number of nodes that run that particular application. The entries of the forwarding table are soft state, and each entry expires after a preconfigured timeout. Therefore, each node advertises its complete configuration after each placement cycle.
Rosario Alfano and Gaetano di Caprio (“TURBO: an autonomous execution environment with scalability and load balancing features”, IEEE Workshop on Distributed Intelligent Systems: Collective Intelligence and Its Applications, Jun. 15-16, 2006, Pages 377-382) disclose a distributed execution environment “Telco Uniform Request Balancer” (TURBO) adopting the Linda model as basic way to distribute task execution requests.
According to Linda Model (disclosed for example by David Gelernter, “Generative Communication in Linda”, ACM Transactions on programming Languages and Systems, Vol. 7, No. 1, January 1985, pages 80-112), workers execute tasks; each task execution request is a Linda Tuple written on a Linda tuple space, named blackboard; a Linda take, operation is used by workers to offer their process capability. Each worker takes a tuple from the blackboard only if it is ready to execute it.
In TURBO, Rosario Alfano and Gaetano di Caprio introduce a Collector entity in the Linda model. The Authors state that a collector can be seen as a blackboard that incorporates a number of workers, i.e. a blackboard with execution capabilities. A collector acts towards other Collector as a worker: it executes take operations in order to transfer tuples on its blackboard from overloaded collectors. In TURBO, given a set of collectors containing in their blackboard tuples representing the task to execute, load balancing is achieved by having each collector calculating its own residual power (RP) which represent its ability to help others. When a collector realizes that it has some RP available (a few tuples in its blackboard) it offers its computational power to other collector, just sending them a notification of availability. Overloaded collectors accept one of the possible computational power offers. When a collector receives acknowledge to its computational power offers, it begin to take tuples from the collector in trouble. Therefore, according to TURBO system, when a collector is overloaded it must only check if it has received some help offers from other collectors and accept them.
Accordingly, TURBO provides a load balancing system to distribute load among collectors evenly.